home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / tde210.zip / GLOBAL.H < prev    next >
Text File  |  1992-11-13  |  26KB  |  410 lines

  1. /*******************  start of original comments  ********************/
  2. /*
  3.  * Written by Douglas Thomson (1989/1990)
  4.  *
  5.  * This source code is released into the public domain.
  6.  */
  7. /*********************  end of original comments   ********************/
  8.  
  9. /*
  10.  * New editor name:  TDE, the Thomson-Davis Editor.
  11.  * Author:           Frank Davis
  12.  * Date:             June 5, 1991
  13.  *
  14.  * This modification of Douglas Thomson's code is released into the
  15.  * public domain, Frank Davis.  You may distribute it freely.
  16.  *
  17.  * See "tdestr.h" for a description of these variables. C requires global
  18.  *  variables to be declared "extern" in all modules except one.  This file
  19.  *  is included in ed.c and it should not be included in any other module.
  20.  */
  21.  
  22. #include <stdio.h>
  23. #include <string.h>
  24. #include <ctype.h>
  25. #include <conio.h>
  26. #ifdef __TURBOC__
  27.    #include <stdlib.h>
  28. #elif __MSC__
  29.    #include <stdlib.h>
  30.    #if defined( toupper )
  31.        #undef toupper
  32.    #endif
  33. #endif
  34.  
  35. displays g_display;
  36.  
  37. status_infos g_status;
  38.  
  39. boyer_moore_type bm;
  40.  
  41. boyer_moore_type sas_bm;
  42.  
  43. CEH ceh;
  44.  
  45. SORT sort;
  46.  
  47. DIFF diff;
  48.  
  49. MACRO_STACK macro_stack[MAX_KEYS];      /* small, simple stack for calls */
  50.  
  51.  
  52.  
  53. /*
  54.  *   those who use special accented characters as part of normal character set
  55.  *     in text do not particularly care for a straight ASCII sort sequence.
  56.  *
  57.  *   this modified ASCII sorting sequence for special accent characters is
  58.  *     useful with Enlish, Esperanto, and French.
  59.  */
  60. SORT_ORDER sort_order = {
  61.                /* ignore case */
  62.    { '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
  63.      '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
  64.      '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
  65.      '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
  66.      ' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',',
  67.      '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  68.      ':', ';', '<', '=', '>', '?',
  69.      '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
  70.      'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[',
  71.      '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
  72.      'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
  73.      'x', 'y', 'z', '{', '|', '}', '~', '', 'c', 'u', 'e', 'a', 'a', 'a',
  74.      'a', 'c', 'e', 'e', 'e', 'i', 'i', 'i', 'a', 'a', 'e', 'a', 'a', 'o',
  75.      'o', 'o', 'u', 'u', 'y', 'o', 'u', '¢', '£', '¥', '₧', 'ƒ', 'a', 'i',
  76.      'o', 'u', 'n', 'n', 'ª', 'º', '¿', '⌐', '¬', '½', '¼', '¡', '«', '»',
  77.      '░', '▒', '▓', '│', '┤', '╡', '╢', '╖', '╕', '╣', '║', '╗', '╝', '╜',
  78.      '╛', '┐', '└', '┴', '┬', '├', '─', '┼', '╞', '╟', '╚', '╔', '╩', '╦',
  79.      '╠', '═', '╬', '╧', '╨', '╤', '╥', '╙', '╘', '╒', '╓', '╫', '╪', '┘',
  80.      '┌', '█', '▄', '▌', '▐', '▀', 'α', 'ß', 'Γ', 'π', 'Σ', 'σ', 'µ', 'τ',
  81.      'Φ', 'Θ', 'Ω', 'δ', '∞', 'φ', 'ε', '∩', '≡', '±', '≥', '≤', '⌠', '⌡',
  82.      '÷', '≈', '°', '∙', '·', '√', 'ⁿ', '²', '■', ' ' },
  83.                /* match case */
  84.    { '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
  85.      '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
  86.      '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
  87.      '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
  88.      ' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',',
  89.      '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  90.      ':', ';', '<', '=', '>', '?',
  91.      '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
  92.      'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[',
  93.      '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
  94.      'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
  95.      'x', 'y', 'z', '{', '|', '}', '~', '', 'C', 'u', 'e', 'a', 'a', 'a',
  96.      'a', 'c', 'e', 'e', 'e', 'i', 'i', 'i', 'A', 'A', 'E', 'a', 'A', 'o',
  97.      'o', 'o', 'u', 'u', 'y', 'O', 'U', '¢', '£', '¥', '₧', 'ƒ', 'a', 'i',
  98.      'o', 'u', 'n', 'N', 'ª', 'º', '¿', '⌐', '¬', '½', '¼', '¡', '«', '»',
  99.      '░', '▒', '▓', '│', '┤', '╡', '╢', '╖', '╕', '╣', '║', '╗', '╝', '╜',
  100.      '╛', '┐', '└', '┴', '┬', '├', '─', '┼', '╞', '╟', '╚', '╔', '╩', '╦',
  101.      '╠', '═', '╬', '╧', '╨', '╤', '╥', '╙', '╘', '╒', '╓', '╫', '╪', '┘',
  102.      '┌', '█', '▄', '▌', '▐', '▀', 'α', 'ß', 'Γ', 'π', 'Σ', 'σ', 'µ', 'τ',
  103.      'Φ', 'Θ', 'Ω', 'δ', '∞', 'φ', 'ε', '∩', '≡', '±', '≥', '≤', '⌠', '⌡',
  104.      '÷', '≈', '°', '∙', '·', '√', 'ⁿ', '²', '■', ' ' },
  105. };
  106.  
  107.  
  108. mode_infos mode = {
  109.    0,           /* initial color scheme */
  110.    FALSE,       /* sync mode? */
  111.    TRUE,        /* sync semaphore must be TRUE - DO NOT CHANGE */
  112.    FALSE,       /* macro recording mode must be FALSE - DO NOT CHANGE */
  113.    TRUE,        /* insert mode */
  114.    TRUE,        /* indent mode */
  115.    8,           /* tab size */
  116.    8,           /* tab size */
  117.    TRUE,        /* default smart tab mode */
  118.    FALSE,       /* inflate tabs? */
  119.    IGNORE,      /* sort case */
  120.    FALSE,       /* enhanced keyboard flag - set in main.c, video_config( ) */
  121.    SMALL_INS,   /* default cursor size == small insert and large overstrike */
  122.    "<=======   End of File   =======>",       /* eof message */
  123.    TRUE,        /* default TRUE = do not write ^Z at end of file */
  124.    CRLF,        /* default write <cr><lf> at eol */
  125.    TRUE,        /* default remove trailing space on edited lines */
  126.    FALSE,       /* default show eol character is off */
  127.    NO_WRAP,     /* default word wrap mode is off */
  128.    0,           /* default left margin - add 1 to margins for display */
  129.    2,           /* default paragraph begin */
  130.    71,          /* default right margin */
  131.    FALSE,       /* default backup mode */
  132.    TRUE,        /* default ruler mode */
  133.    MM_DD_YY,    /* default date style */
  134.    _12_HOUR     /* default time style */
  135. };
  136.  
  137. /*
  138.  * do_it is an array of pointers to functions that return int with an argument
  139.  * that is a pointer to a window.  Is that right???
  140.  */
  141.  
  142. #define NUM_FUNCS          132
  143.  
  144. int  (* (do_it[NUM_FUNCS]))( WINDOW * ) = {
  145.    insert_overwrite,                /*   regular text keys        0  */
  146.    get_help,                        /*   Help                     1  */
  147.    insert_newline,                  /*   Rturn                    2  */
  148.    next_line,                       /*   NextLine                 3  */
  149.    beg_next_line,                   /*   BegNextLine              4  */
  150.    move_down,                       /*   LineDown                 5  */
  151.    move_up,                         /*   LineUp                   6  */
  152.    move_right,                      /*   CharRight                7  */
  153.    move_left,                       /*   CharLeft                 8  */
  154.    pan_right,                       /*   PanRight                 9  */
  155.    pan_left,                        /*   PanLeft                 10  */
  156.    word_right,                      /*   WordRight               11  */
  157.    word_left,                       /*   WordLeft                12  */
  158.    page_down,                       /*   ScreenDown              13  */
  159.    page_up,                         /*   ScreenUp                14  */
  160.    goto_end_file,                   /*   EndOfFile               15  */
  161.    goto_top_file,                   /*   TopOfFile               16  */
  162.    goto_bottom,                     /*   BotOfScreen             17  */
  163.    goto_top,                        /*   TopOfScreen             18  */
  164.    goto_eol,                        /*   EndOfLine               19  */
  165.    home,                            /*   BegOfLine               20  */
  166.    goto_line,                       /*   JumpToLine              21  */
  167.    center_window,                   /*   CenterWindow            22  */
  168.    center_window,                   /*   CenterLine              23  */
  169.    horizontal_screen_right,         /*   HorizontalScreenRight   24  */
  170.    horizontal_screen_left,          /*   HorizontalScreenLeft    25  */
  171.    scroll_down,                     /*   ScrollDnLine            26  */
  172.    scroll_up,                       /*   ScrollUpLine            27  */
  173.    pan_up,                          /*   PanUp                   28  */
  174.    pan_down,                        /*   PanDn                   29  */
  175.    toggle_overwrite,                /*   ToggleOverWrite         30  */
  176.    toggle_smart_tabs,               /*   ToggleSmartTabs         31  */
  177.    toggle_indent,                   /*   ToggleIndent            32  */
  178.    toggle_ww,                       /*   ToggleWordWrap          33  */
  179.    toggle_crlf,                     /*   ToggleCRLF              34  */
  180.    toggle_trailing,                 /*   ToggleTrailing          35  */
  181.    toggle_z,                        /*   ToggleZ                 36  */
  182.    toggle_eol,                      /*   ToggleEol               37  */
  183.    toggle_sync,                     /*   ToggleSync              38  */
  184.    toggle_ruler,                    /*   ToggleRuler             39  */
  185.    toggle_tabinflate,               /*   ToggleTabInflate        40  */
  186.    set_tabstop,                     /*   SetTabs                 41  */
  187.    set_left_margin,                 /*   SetLeftMargin           42  */
  188.    set_right_margin,                /*   SetRightMargin          43  */
  189.    set_paragraph_margin,            /*   SetParagraphMargin      44  */
  190.    format_paragraph,                /*   FormatParagraph         45  */
  191.    format_paragraph,                /*   FormatText              46  */
  192.    left_justify,                    /*   LeftJustify             47  */
  193.    right_justify,                   /*   RightJustify            48  */
  194.    center_justify,                  /*   CenterJustify           49  */
  195.    tab_key,                         /*   Tab                     50  */
  196.    backtab,                         /*   BackTab                 51  */
  197.    match_pair,                      /*   ParenBalance            52  */
  198.    back_space,                      /*   BackSpace               53  */
  199.    char_del_under,                  /*   DeleteChar              54  */
  200.    char_del_under,                  /*   StreamDeleteChar        55  */
  201.    line_kill,                       /*   DeleteLine              56  */
  202.    eol_kill,                        /*   DelEndOfLine            57  */
  203.    word_delete,                     /*   WordDelete              58  */
  204.    insert_newline,                  /*   AddLine                 59  */
  205.    insert_newline,                  /*   SplitLine               60  */
  206.    join_line,                       /*   JoinLine                61  */
  207.    dup_line,                        /*   DuplicateLine           62  */
  208.    undo_line,                       /*   AbortCommand            63  */
  209.    undo_line,                       /*   UndoLine                64  */
  210.    undo,                            /*   UndoDelete              65  */
  211.    toggle_search_case,              /*   ToggleSearchCase        66  */
  212.    find_string,                     /*   FindForward             67  */
  213.    find_string,                     /*   FindBackward            68  */
  214.    find_string,                     /*   RepeatFindForward1      69  */
  215.    find_string,                     /*   RepeatFindForward2      70  */
  216.    find_string,                     /*   RepeatFindBackward1     71  */
  217.    find_string,                     /*   RepeatFindBackward2     72  */
  218.    replace_string,                  /*   ReplaceString           73  */
  219.    define_diff,                     /*   DefineDiff              74  */
  220.    repeat_diff,                     /*   RepeatDiff              75  */
  221.    mark_block,                      /*   MarkBlock               76  */
  222.    mark_block,                      /*   MarkLine                77  */
  223.    mark_block,                      /*   MarkStream              78  */
  224.    unmark_block,                    /*   UnMarkBlock             79  */
  225.    move_copy_delete_overlay_block,  /*   FillBlock               80  */
  226.    move_copy_delete_overlay_block,  /*   NumberBlock             81  */
  227.    move_copy_delete_overlay_block,  /*   CopyBlock               82  */
  228.    move_copy_delete_overlay_block,  /*   KopyBlock               83  */
  229.    move_copy_delete_overlay_block,  /*   MoveBlock               84  */
  230.    move_copy_delete_overlay_block,  /*   OverlayBlock            85  */
  231.    move_copy_delete_overlay_block,  /*   DeleteBlock             86  */
  232.    move_copy_delete_overlay_block,  /*   SwapBlock               87  */
  233.    block_write,                     /*   BlockToFile             88  */
  234.    block_print,                     /*   PrintBlock              89  */
  235.    block_expand_tabs,               /*   BlockExpandTabs         90  */
  236.    block_compress_tabs,             /*   BlockCompressTabs       91  */
  237.    block_compress_tabs,             /*   BlockIndentTabs         92  */
  238.    block_trim_trailing,             /*   BlockTrimTrailing       93  */
  239.    block_convert_case,              /*   BlockUpperCase          94  */
  240.    block_convert_case,              /*   BlockLowerCase          95  */
  241.    block_convert_case,              /*   BlockRot13              96  */
  242.    block_convert_case,              /*   BlockFixUUE             97  */
  243.    block_email_reply,               /*   BlockEmailReply         98  */
  244.    block_convert_case,              /*   BlockStripHiBit         99  */
  245.    sort_box_block,                  /*   SortBoxBlock           100  */
  246.    date_time_stamp,                 /*   DateTimeStamp          101  */
  247.    edit_another_file,               /*   EditFile               102  */
  248.    dir_help,                        /*   DirList                103  */
  249.    file_file,                       /*   File                   104  */
  250.    save_file,                       /*   Save                   105  */
  251.    save_as_file,                    /*   SaveAs                 106  */
  252.    change_fattr,                    /*   SetFileAttributes      107  */
  253.    edit_next_file,                  /*   EditNextFile           108  */
  254.    search_and_seize,                /*   DefineSearchAndSeize   109  */
  255.    search_and_seize,                /*   RepeatSearchAndSeize   110  */
  256.    redraw_screen,                   /*   RedrawScreen           111  */
  257.    size_window,                     /*   SizeWindow             112  */
  258.    split_horizontal,                /*   SplitHorizontal        113  */
  259.    split_vertical,                  /*   SplitVertical          114  */
  260.    next_window,                     /*   NextWindow             115  */
  261.    prev_window,                     /*   PreviousWindow         116  */
  262.    zoom_window,                     /*   ZoomWindow             117  */
  263.    next_hidden_window,              /*   NextHiddenWindow       118  */
  264.    set_marker,                      /*   SetMark1               119  */
  265.    set_marker,                      /*   SetMark2               120  */
  266.    set_marker,                      /*   SetMark3               121  */
  267.    goto_marker,                     /*   GotoMark1              122  */
  268.    goto_marker,                     /*   GotoMark2              123  */
  269.    goto_marker,                     /*   GotoMark3              124  */
  270.    record_on_off,                   /*   RecordMacro            125  */
  271.    play_back,                       /*   PlayBack               126  */
  272.    save_strokes,                    /*   SaveMacro              127  */
  273.    load_strokes,                    /*   LoadMacro              128  */
  274.    clear_macros,                    /*   ClearAllMacros         129  */
  275.    pause,                           /*   Pause                  130  */
  276.    quit                             /*   Quit                   131  */
  277. };
  278.  
  279. /*
  280.  * set the 256 possible function keys to FS (First Stroke)
  281.  * set the 1024 stroke buffer keys to SK (Stroke Key) and SN (Stroke Next)
  282.  */
  283. #define         FS      STROKE_LIMIT+1
  284. #define         SK      MAX_KEYS+1
  285. #define         SN      STROKE_LIMIT+1
  286.  
  287. MACRO macro = {
  288.                /* 16 rows of 16 = 256 = MAX_KEYS */
  289.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  290.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  291.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  292.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  293.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  294.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  295.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  296.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  297.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  298.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  299.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  300.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  301.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  302.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  303.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  304.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  305.                  /* 102.4 rows of 10 = 1024 = STROKE_LIMIT */
  306. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  307. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  308. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  309. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  310. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  311. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  312. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  313. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  314. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  315. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  316. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  317. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  318. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  319. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  320. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  321. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  322. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  323. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  324. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  325. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  326. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  327. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  328. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  329. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  330. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  331. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  332. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  333. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  334. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  335. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  336. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  337. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  338. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  339. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  340. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  341. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  342. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  343. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  344. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  345. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  346. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  347. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  348. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  349. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  350. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  351. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  352. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  353. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  354. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  355. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  356. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  357. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  358. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  359. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  360. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  361. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  362. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  363. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  364. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  365. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  366. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  367. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  368. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  369. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  370. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  371. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  372. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  373. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  374. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  375. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  376. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  377. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  378. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  379. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  380. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  381. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  382. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  383. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  384. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  385. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  386. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  387. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  388. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  389. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  390. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  391. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  392. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  393. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  394. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  395. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  396. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  397. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  398. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  399. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  400. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  401. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  402. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  403. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  404. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  405. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  406. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  407. SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN, SK, SN,
  408. SK, SN, SK, SN, SK, SN, SK, SN
  409. };
  410.